package com.bookstore.bean;

import java.util.Collection;
import java.util.HashMap;
import java.util.Map;

/**
 * Created by Admin on 2016/8/13.
 */
public class ShoppingCart {
    private Map<Integer,ShoppingCartItem> books=new HashMap<>();
    /**
     * 向购物车中添加商品
     * @param book
     */
    public void addBook(Book book){
        //1. 检查购物车中有没有该商品, 若有, 则使其数量 +1, 若没有,
        //新创建其对应的 ShoppingCartItem, 并把其加入到 books 中
        ShoppingCartItem shoppingCartItem=books.get(book.getId());
        if(shoppingCartItem==null){
            shoppingCartItem=new ShoppingCartItem(book);
            books.put(book.getId(),shoppingCartItem);
        }else{
            shoppingCartItem.increment();
        }
    }

    /**
     * 检查购物车中是否包含指定id 的商品
     * @param id
     * @return
     */
    public boolean hasBook(Integer id){
        return books.containsKey(id);
    }
    /**
     *
     * @return
     */
    public Map<Integer,ShoppingCartItem> getBooks(){
        return books;
    }

    /**
     * 获取购物车中的所有的ShoppingCartItem 组成的集合
     * @return
     */
    public Collection<ShoppingCartItem> getItems(){
        return books.values();
    }

    /**
     * 返回购物车商品的总数量
     * @return
     */
    public int getBookNumber(){
        int total=0;
        for(ShoppingCartItem sc:books.values()){
            total+=sc.getQuantity();
        }
        return total;
    }

    /**
     * 返回购物车中商品的总金额
     * @return
     */
    public float getTotalMoney(){
        int totalMoney=0;
        for(ShoppingCartItem sc:books.values()){
            totalMoney+=sc.getItemMoney();
        }
        return totalMoney;
    }

    /**
     * 返回购物车是否为空
     * @return
     */
    public boolean isEmpty(){
        return books.isEmpty();
    }

    /**
     * 清空购物车
     */
    public void clear(){
       books.clear();
    }

    /**
     * 移除购物车指定商品
     * @param id
     */
    public void removeItem(Integer id ){
        books.remove(id);
    }

    /**
     * 根据书的id 修改书的数量
     * @param id
     * @param quantity
     */
    public void updateItemQuantity(Integer id,int quantity){
        ShoppingCartItem sc=books.get(id);
        if(sc!=null){
            sc.setQuantity(quantity);
        }
    }
}
